#hoping python or gin get one..
Explore tagged Tumblr posts
nommedtail · 3 years ago
Photo
Tumblr media Tumblr media Tumblr media Tumblr media
ok neural cloud will get get me for at least two battlepass skins and two skins 💸
6 notes · View notes
dontcallmepepper · 6 years ago
Text
Volatile Situation {Dying Light}
Volatiles. Damn near perfect hunters at night. Like a Wendigo, but even one of those sons’a bitches will send a Wendigo running for the hills. Like those freaks, Volatiles were once human–the virus had to start somewhere. They were first called biters. They were the weakest and the dumbest but were like a school of piranhas, destructive in numbers. Anyone lucky to escape a feeding frenzy would be infected, and eventually turn into one of these monsters, if they survived long enough.
A volatile’s senses are heightened, their strength unmatched. The jaw is mandible, able to expand much like a python for quick, easy feeding on whatever they can get it around. UV light weakens them, it takes a lot to kill them. So hit them with all ya got.  You’d hear them before you see them, and they have amazing eyesight for something that’s basically rotting away on two legs.
Gin learned all this on the fly. She went up against these things like it was her job. And it was. She found ways to study them from afar. She was a good observer, just as she was a good hunter. But now, it was time to run. Her campsite lost power, because of some rookie’s mistake. The kid got himself electrocuted on their transformer, and the UV lights were useless now that nothing could light them. The Volatiles saw it, and attacked, infecting and killing all but four humans, including her. Gin had long switched out her LED lights on her jeep and on the lightbar across the roof and replaced them with strong LED UV lights.  It could flood about 30 feet of space around the whole jeep that was raised on offroad 33′s. The grill on the front was strong steel, and the thing plowed over biters and the occasional weakened Volatiles during the day.
She managed to grab all she could fit in the back of her jeep, food, weapons, ammo, all on top of the things that were already hers. And now it was time to find signs of life–human life. She kept her eyes peeled in the night, her jeep lighting up the road with her headlights and the UV light bar. She saw another building in the distance, surrounded by a barbed wire prison fence, and out of the windows flooded UV light, the vibrant purple stood out in the night. It was the first of any sign of humans she had seen in almost a hundred miles. Dawn was approaching, and she could breathe a sigh of relief, she just hoped that this wasn’t a trap. She rolled to a stop at the gate and gave her horn a couple of honks, waiting for someone to come out, but she still didn’t dare get out of her jeep, not yet, it wasn’t light enough.
21 notes · View notes
Text
The Visitors
(Scene opens to a sitting room. Low sexy lighting and soft sexy music. On the sofa are Victor and Iris just beginning to make passes at each other.)
Victor (Graham Chapman): Would you mind terribly if I hold your hand?
Iris (Carol Cleveland): Oh no, not at all.
Victor: Oh Iris, you're so very beautiful.
Iris: Oh, do you really mean that?
Victor: I do, I do, I do. I think I'm beginning to fall in love with you.
Iris: Oh Victor.
Victor: It's silly isn't it?
Iris: No, no, not at all dear sweet Victor.
Victor: No I didn't mean that. Only just us being so close together for so many months in the soft-toy department and yet never daring to...
Iris: Oh, oh Victor.
Victor: Oh Iris. (they move closer to kiss; just before their lips meet the doorbell rings) Who can that be?
Iris: Oh, well you try and get rid of them.
Victor: Yes I will, I will.
(Victor opens the front door. Arthur Name is standing outside the door.)
Arthur (Eric Idle): Hello!
Victor: Hello?
Arthur: Remember me?
Victor: No I'm...
Arthur: In the pub. The tall thin one with the moustache, remember? About three years ago?
Victor: No, I don't I'm afraid.
Arthur: Oh, blimey, it's dark in here, (switches light on) that's better. Only you said we must have a drink together sometime, so I thought I'd take you up on it as the film society meeting was cancelled this evening.
Victor: Look, to be frank, it is a little awkward this evening.
Arthur: (stepping in; to Iris) Hello, I'm Arthur. Arthur Name. Name by name but not by nature. I always say that, don't I Vicky boy?
Victor: Really?
Arthur: (to Victor) Is that your wife?
Victor: Er, no, actually.
Arthur: Oh, I get the picture. Eh? Well don't worry about me Vicky boy, I know all about one-night stands.
Victor: I beg your pardon?
Arthur: Mind if I change the record? (takes the record off)
Victor: Look, look, we put that on.
Arthur: Here's a good one, I heard it in a pub. What's brown and sounds like a bell?
Victor: I beg your pardon?
Arthur: What's brown and sounds like a bell? Dung! Ha, ha, ha, that's a good one. I like that one, I won't keep you long. (the gramophone plays the 'Liberty Bell March' very loud) That's better, now don't worry about me. I'll wait here till you've finished.
(The doorbell rings again.)
Victor: Who the hell...
Arthur: I'll get it. It'll be friends of mine. I took the liberty of inviting them along.
Victor: Look, we were hoping to have a quiet evening on our own.
Arthur: Oh, they won't mind. They're very broad-minded. Hello!
(He opens the door; Mr and Mrs Equator walk in and go straight up to Victor.)
Brian (John Cleese): Good evening. My name is Equator, Brian Equator. Like round the middle of the Earth, only with an L. (wheezing laugh) This is my wife Audrey, she smells a bit but she has a heart of gold.
Audrey (Terry Jones): Hello, ha ha ha ha ha ha ha ha ha...
Victor: There must have been some kind of misunderstanding, because this is not the...
Brian: Who's that then?
Victor: What?
Brian: Who's the bird?
Victor: I'm...
Brian: You got a nice pair there haven't you love? (puts hand on Iris's boobs and gives a wet kiss; Iris screams) Shut up you silly bitch, it was only a bit of fun.
Victor: Now look here...
Brian: Big gin please.
Arthur: I'll get it.
Victor: (going after Arthur) Look, leave those drinks alone.
Audrey: And three tins of beans for me please.
Brian: I told you to lay off the beans, you whore!
Audrey: I only want three cans.
Brian: Button your lip you rat-bag. (laughs uproariously)
Audrey: (joins in) Ha, ha, ha, ha!!
Brian: It was rather witty, wasn't it? Where's my gin?
(The doorbell rings again)
Victor: Who the hell's that?
Brian: Oh, I took the liberty of inviting an old friend along, as his wife has just passed away, and he's somewhat distraught poor chap. I hope you don't mind.
Arthur: (opening door) Come on in.
(In walks Mr Freight in underpants, sequins, eye make-up, white wellies, and necklace.)
Mr Freight (Terry Gilliam): Oh? My God, what a simply ghastly place.
Brian: Not too good is it? A pint of creme de menthe for my friend. Well how are you, you great poof? (sits down) Bit lumpy. Ah, no wonder, I was sitting on the cat. (throws it into fire)
Iris: Aaaagh! Boo boo hooo.
Mr Freight: I've asked along a simply gorgeous little man I picked up outside the Odeon.
Brian: Is he sexy then?
(In walks Mr Cook with a goat. Freight kisses him.)
Mr Cook (Michael Palin): I had to bring the goat, he's not well. I only hope he don't go on the carpet.
Brian: (to Iris) Come on then love, drop 'em.
Iris: Aaaaaaagh! (runs out)
Brian: Blimey, she don't go much do she?
(He sits in chair which collapses.)
Audrey: Ha, ha, ha, ha, ha, ha, oooooh! I've wet 'em
Mr Cook: The goat's just done a bundle.
(A group of singers run on, dressed as Welsh miners. All talk at once.)
Victor: Look, get out all of you. Go on. Get out! Get out!
Brian: I beg your pardon?
Victor: I'm turning you all out. I'm not having my house filled with filthy perverts, now look, I'm giving you just half a minute then I'm going to call the police, so get out.
Brian: I don't much like the tone of your voice. (shoots him) Right let's have a ding dong.
All: (singing) Ding dong merrily on high, in Heaven the bells are ringing etc...
- Monty Python's Flying Circus
2 notes · View notes
askrigg21 · 6 years ago
Text
Tumblr media
Bao Buns with pork belly
WE might eat first with our eyes but sometimes we taste what we think we see. So, hands up, this veteran foodie has just confused pickled onion for chilli.
Chef Kevin Buccieri has brought us his Thai green ice cream to try and first I get flavours of lemongrass followed by chilli coming through the cold. It’s a little unsettling but intriguing. I wonder how he does it. Is the chilli infused or is it these little flecks of red, I ask? No, that’s pickled red onion, he says. I taste again and now I know the pickle flavour comes through. Doh!
It works. Brilliantly. Kevin thinks this dish should be a starter or certainly a palate cleanser (palate confuser, more like!) but diners prefer it at the end, like we had.
Celeriac ‘tagliatelle’
We have been invited to eat as guests at the Birdhouse, the tea emporium run by mother and daughter Julie and Rebecca English in a former workshop in  the charmingly named Alsop Fields on Sidney Street, Sheffield. They recently hired Kevin, ex-Rutland Arms No 2, to up the food offer from pies.
The menu, his first, is a pot pourri of small plates or tapas, mostly with an oriental slant at around a fiver each. And they often come with a chilli riff.
The chilli sidles up almost as an afterthought with the slices of crunchy stir-fried lotus root. It comes at you full gallop with the Puy lentil curry, firm and toothsome. But it is instantly addictive, particularly since it is on a contrasting bed of crispy kale. My wife loves it and she is a woman who has shunned kale all her life.
Tumblr media
Chef Kevin Buccieri
We’ve been here before to buy tea but not lingered. There’s a sunny courtyard we now look down on from our upstairs table in one of two first floor rooms, all beams and brick, seating around 50. From the windows across the room you can see the Porter Brook filter its way through the city’s industrial backside.
Sidney Street is a little out of the way and apart from an A-board and a slightly outdated menu pinned to the front wall – there’s not even a menu or picture of a dish on the website as I write – so Kevin’s food is being hidden under the proverbial bushel.
Seek it out, if only for the pork belly filled steamed bao buns. I’d half expected a chopped filling  but the pork is in whole strips of tender hoisin-flavoured meat, a lovely contrast to the spongy, airy bun. There are two for £8.50 but the dish could easily be reduced to one to keep the fiver price point.
I first encountered Kevin, or his food, at the Rutland pub, just a stone’s throw away on Brown Street, where I had praised head chef Richard Storer (aka Chef Rico) for a stunning fennel ice cream with cucumber jelly. He sportingly gave all the credit to Kevin.
Kevin, in return, acknowledges his culinary debt to Rico. He’d left college after training as a joiner but found that without experience he wasn’t wanted so took to pot washing. After the usual round of pubs and restaurants, without much ambition, he found himself beached up at the Rutland “where I truly found my passion.” A light bulb had been switched on. He stayed for over four years before striking out on his own.
Tumblr media
Curried lentils, crispy kale
Now the Rutland is an odd place, a scruffy, some may say eccentric-looking boozer, with an inventive, experimental kitchen which daily faces the heartbreak of sending out the pub’s best-seller, the Slutty Rutty, a massive chip breadcake, to those who should eat better.
For this reason you will not find chips on Kevin’s evening menu (it is available from 6pm). “The nearest I come to chips is the patatas bravas,” he says. Ah, we didn’t try those. But we did seem to have everything else. Dishes kept arriving (remember, we were being treated) and we were in danger of becoming Monty Python’s explosive Mister Creosote.
We loved the delicate goats cheese arancini balls winking like eyes with little ‘pupils’ of yellow pepper puree and the crunchy cubes of tofu (served with silky avocado) in a sauce of teriyaki, wasabi and golden syrup (rather than honey, to please the vegans). Since tofu is all texture and no taste it needs these companions.
There were big, generous slices of home cured salmon with paper-thin beetroot as well as seasonal asparagus served the classic way, with poached egg, hollandaise and truffle oil.
Despite his surname – great grandparents came over from Naples and he grew up in Darnall and Birley – Kevin cannot speak Italian nor cares that much for Italian food. But he does do a celeriac ‘tagliatelle’ with pesto. See if you can guess what the sauce is. A clue: apart from the pesto the dish only has one ingredient.
Writing all this I realise just how much we ate so my tastebuds can be excused over the Thai ice cream (I ought to mention we also tried an Earl Grey ice with gin and vanilla sauce but don’t ask me for a considered opinion – I was flavoured out)!
Tumblr media
Delicate goats cheese arancini
My tastebuds were very much in action at the start of the meal with the arrival of home made bread with tzatziki. Sourdough, I silently groaned, for local bakeries all seem to make the same rubbery, damp bread. This was none of that and it was close crumbed instead of holey. Kevin was disappointed with the lack of air pockets but not us. If we want holes we’ll eat focaccia.
This menu is very much an opening salvo. Kevin, a one man kitchen, has high hopes of doing more fish, probably pickled, possibly a ceviche. And a duck dish with a chocolate nod to Sat Bains’ Nottingham restaurant may appear when he’s happy with it.
Sheffield’s food scene is currently the liveliest I’ve seen it. Strip away the seemingly endless burgers and pizzas and there are plenty of fresh ideas and talent.  The Birdhouse adds to the mix. Just don’t ask for chips or Italy’s most famous export. Kevin might sound Italian but “I hate making pizzas,” he says.
You would be in the dog house at the Birdhouse!
Birdhouse is at Alsop Fields, Sidney Street, Sheffield S1 4RG. Tel: 0114 327 3695. Web: http://www.birdhouseteacompany.com
Tumblr media
The Birdhouse. Our table is in the top window
————-
Birdhouse trills a happy tune WE might eat first with our eyes but sometimes we taste what we think we see. So, hands up, this veteran foodie has just confused pickled onion for chilli.
0 notes
holytheoristtastemaker · 5 years ago
Link
The best part of any idea is when it's fresh and new, and you don't yet know the limitations and restrictions.  It can be almost magical!  Oh, the customers you'll help and the money you'll make!  All you have to do first is... write a lot of code.
How much code?  Well, obviously that depends on your idea and what business you're planning on setting up.  But there's a huge amount of code you'll need and want for any SaaS business, and a lot of it you'll have to write before you can write even line one of your business logic.
Where did I come by this list?  Well, I've spent quite a few years working on SaaS businesses at a variety of stages of maturity, and I keep my ear to the ground by listening to good SaaS podcasts. I noticed that there are a lot of common tasks necessary to launch a new SaaS product, and I decided to help fix that problem by taking it all and packing it into a SaaS starter kit to help cut down on the code you need to write (and the time you need to spend) to launch your business.
Let's explore that huge list of code.
Stuff You're Gonna Need
The basics
Okay, first you're gonna need something to start from.  Unless you plan on writing everything from scratch, you'll need to set up some common frameworks to enable a modern web app to run.  On the front-end, that's something like:
A bundler/build system.  Examples: Webpack, Parcel, Gulp, Grunt.
Babel, if you want to use modern JavaScript features on older browsers.
A UI library.  Examples: React, Vue, Angular, Elm.
A CSS framework.  Examples: Bootstrap, TailwindCSS, Semantic, Bulma.
An HTTP requests library, if your framework doesn't come with one.  Examples: Superagent, Axios, got.
A testing library.  Examples: Jest, Mocha, Jasmine, Ava.
Getting all these various tools set up to work together will take some time as well.  Just searching "configuring webpack for X" reveals a minefield of blog posts written for various versions of webpack and X.  Some will help, some won't, and sometimes only experimentation will reveal which is which.
Thankfully, there are tools that make a lot of this easier.  Next.js for React and Nuxt.js for Vue are just two examples, but there are many flavours of UI frameworks that can significantly reduce the setup time for the above.  Of course, now you have to learn how your UI framework works as well as your UI library, but generally that trade-off is worthwhile.
Moving on to the back-end, you're going to want a web framework.  This will largely depend on the language you're working with, but you have plenty to choose from:
Node.js: Fastify, Koa, and Express.
PHP: Laravel, Symfony, and CakePHP.
Python: Django, Pylons, and Zope.
Go: Gin, Beego, Martini.
Ruby: Sinatra, Hanami, and of course Rails.
This list is by no means extensive - just tracking down all the available frameworks for a single language would be an article in it's own.  But it does display the variety of choices available.  Each language and framework has its own capabilities and trade-offs, and that's something you'll have to take into account before you make your choice.  (Or after!  It's just harder to change your mind at that point.)
Development build system
Actually, let's take a step back for a second.  Sure, those are the basics, but you still need someplace to run all that code, and in a way that speeds up your evaluation of code changes.
You could run everything on your local machine, but that's rarely ideal.  For starters, your local environment is highly unlikely to resemble your production environment, and you don't want seemingly-minor differences causing problems when you deploy.  Plus, it's very hard (comparatively) to automate local environment setup, so adding anyone else to the project is bound to cause conflict, especially if they want to use an entirely different OS from you.
You have a lot of options for this, but the two easiest/most-common are:
1) Use a Virtual Machine
Virtual Machines have the advantage of being very simple to understand and work with.  If you know how to navigate your own system, you'll know how to navigate a virtual one just fine.  They're easily automated with something like Ansible, and easy to use for development with something like Vagrant.  Plus, you'll likely only need to modify a bit of your Ansible scripts or variables to turn your development deploy script into a production deploy script.
But they can be a bit heavy, as they are emulating an entire other machine.  There are good solutions to this (enabling CPU optimizations, using AMIs or other machine images to reduce deploy time, etc), but there's also an alternative.
2) Use docker
Docker containers are crazy lightweight.  Essentially, they just run the bits of the system required to run your code, as dictated by you.  Plus, a great many CI systems accept dockerfiles as input to automatically run tests and deploys of your code.  A well-built docker setup is a thing of beauty.
However, docker can be a bit confusing.  It requires learning a different mindset and tooling from working directly on a machine or virtual machine, and can lead you naturally towards more-complex solutions where a simpler one would otherwise work better for your use case.  (Hello, microservices!)
Reducing your development cycle time with watchers
A small thing that can save you a lot of time is setting watchers on your code.  These are programs that keep an eye out for changes in your code, then re-compile and restart servers so that the latest version of your code is always running when you refresh your browser.  Many of the tools you'll use will come with built-in watchers (webpack, for example), but for others, you'll need to install your own (nodemon to watch your Node.js server).
And like with anything else, there's configuration you have to do to make sure that each watcher is only watching the correct directories, that files are shared between your host system and VM/docker container in a fast method that won't trip up your watchers, etc.
Application template & UI architecture
With any luck, you'll have a design already to work with, but you still need to translate that design into an application template and common UI components and architecture.  A good CSS framework can really help here, allowing you to set up common colours and sizes that you can use across the entire project, and using component-based development can allow you to, say, create a TextInput element once, then use it across your project multiple times.  You'll also need to set up some form of menu infrastructure that allows you to enable/disable or hide/show certain menus based on user access or page location.
Logging
Proper logging can give you more and more-useful information than a slapdash setup can.  You'll want to log requests and request data, useful checkpoint information, and the usual stuff - errors, stack traces, etc.  But you also want to make sure not to log too much.  For example, you'll obviously want to omit passwords, but you should also in general omit headers, especially headers containing authentication tokens, for obvious security reasons.
Database migrations
Database schemas are part of your app as well, and that means they need to be represented as code somewhere and checked into version control.  Manually updating your production database to match your development database is amateur-hour.
So in addition to your back-end frameworks and your front-end frameworks, you'll need a database migration framework, and you'll need to write migrations for it.
Users
Users are the fundamental primitive of a SaaS application, and there's a common set of interactions you'll require: sign-up, login, logout, edit profile, etc.  But sitting underneath all that is a bit of a contentious topic: user authentication.
There are a bunch of ways to do user authentication, but most of them are wrong and will end up leaving you with security vulnerabilities.  JWTs are popular and can be secured, but you need to follow some best practices:
Don't store JWTs in localStorage, since any JS that runs on your page can access them, and if you get hit with a cross-site scripting attack, they can export your tokens en masse.
Store JWTs in secure, HTTPS-only cookies.
Include a global version code in your JWTs so that you can instantly invalidate all JWTs every issued.
Include a user version code in your JWTs so that a user can instantly invalidate all JWTs ever issued for them specifically.  This is useful to include a "log out all devices" option for users who may have lost a device or had their account compromised.
Send a Cross-Site Request Forgery token with every request as a javascript-injected header, and make sure that token matches one you've stored for the user on login.
You'll notice a lot of these practices are "in case of a security breach", and you'd hope that if you did everything correctly, they'd be unnecessary.  However, that's a fantasy and should be treated as such.  No site is 100% secure and bug-free, and yours won't be either.  Instead, you need to work in layers, so that if any one layer of security fails, there are still other layers and countermeasures in place.
Form validation
When users sign up, log in, and really all throughout your app, they'll be filling out and submitting forms.  These forms will need to be validated for the appropriate data, preferably on both the front-end (before the data is sent to the server, to provide the best experience to the user) and the back-end (to ensure no junk data is saved to the database).  If your back-end isn't in JavaScript, you'll need validation libraries for both languages that have the same semantics.
Transactional email
Transactional email is the email you send when certain events happen for your users.  These can be lifecycle events, like welcome emails, "trial about to expire" emails, etc, or service-related emails like email address confirmation emails, password reset emails, notifications about your service, etc.
You'll need to find and configure a decent mailer module, and usually perform some DNS configuration at your mail service host's instruction.  Some mailer modules will come with template capabilities built-in, while others will leave you to install your own.
Subscriptions/Payments
Getting paid is why most people are going to start a SaaS in the first place, so processing payments and subscriptions is mightily important.  Choosing and setting up an account with a payments provider is up to individual preference, but Stripe offers probably the best API and developer experience out there, while PayPal is usually the most-requested provider of choice from users.  It's likely that you'll want to offer multiple ways to pay through multiple providers, just to ensure that no potential customer is left behind.
If you offer subscriptions, you'll want to allow users to choose between a monthly billing cycle and an annual one.  Annual billing is a great way for dedicated users to save money, while also offering you the benefits of higher LTV and getting you the money up-front, increasing your liquidity.
If you have multiple levels of plans, you'll need to implement the ability for users to change between those levels, usually offering a prorated fee for the month of transition.
Though it's definitely not the "happy path", you'll need to offer users the ability to cancel subscriptions.  You shouldn't add extra friction to this, since some users will just be cancelling temporarily, and you want to leave a good impression on them, but it's important to try to capture the reason they're leaving, so you can improve your service.
Production deploy system
Once you've fully-developed your fancy new SaaS, you're going to need to put it up on the web for people to interact with, and for that, you're going to need a deploy system.  Even if that system is largely manual, you're going to want defined, repeatable, documented steps that ensure that deploys go off without incident.
You're going to want to cover the following bases, at a minimum:
Ensure server is reachable
Ensure server is set up correctly (correct runtime libraries installed, etc.)
Update code
Run DB migrations
Ensure front-end UI code is not cached in user's browser (update ETags, etc)
There are a whole lot more things you can do to ensure a safe and clean deploy, but this list is at least a good starting place.
Production backups
Much like how we discussed security in layers above, backups of production data are another layer of defence in case something goes wrong.  If you're still using manual processes to alter user data, it can be very easy for a slip of the keys to accidentally alter or delete the wrong user's data.  And if you're using automated processes, it's usually a lot harder to make those simple mistakes, but more complex mistakes can make it very easy to edit or delete huge swathes of user data.  Proper backups will one day save your bacon, bet on it.
What makes a proper backup, then?  That's a whole topic on its own, but you should start with:
Complete: Don't just backup the database - if the user uploads files, those should be backed up as well.
Regular: Backups should happen on a schedule, ideally daily or more, for more-volatile data.
Retained: You'll want to keep your backups around for a while, though you might want to set up a schedule for longer-retained backups.  (i.e. Daily backups retained for 30 days, weekly backups retained for 3 months, monthly backups retained for 1 year.)
Secure: Your backups should be kept with the same level of security as your data.  If your data is encrypted at rest, your backups should be as well.  Make sure to keep your encryption keys secure.  If you lose those keys, you lose the backup.
Tested: A backup that hasn't been tested is not a backup.  You don't want to find out that your backup process doesn't work (or stopped working) when you need to restore critical data.  There should be an automated test process that runs after backups are created.
If you're lucky, your hosting platform will offer some level of database backup as a service, which will save you a lot of time and effort setting up.  It likely won't cover 100% of your needs, but it will get you a lot closer than starting from scratch.
Stuff You're Gonna Want
Okay!  That'll get you off the ground, but once you start seeing any success at all, you're going to start wanting something a little more... robust.  Eventually, manually editing the database is going to get tedious (not to mention dangerous), and users will start asking the same questions over and over.  You're going to have to slow down on development related to your core business and implement a bunch more supporting features.
Admin console
You can edit and delete users directly from the database, sure, but all it takes is one time forgetting to add a WHERE or LIMIT clause to a statement to make you long for a proper administration console.  (And backups.  You set up backups, right?)
An admin console is also a great place for dashboards, user statistics, summaries, metrics, etc.  Your admin console can become your one-stop-shop for running your SaaS.
Documentation
Documentation can serve multiple purposes.  Primarily, it's for user education, but conveniently, this is user education you don't have to do manually.  Think about it like automated customer support - a user that answer their question from your documentation is a user that doesn't email you.
If your documentation is publicly available, it can also help users make purchasing decisions.  By answering questions about your service openly and up-front, you can let users more-easily determine if your service will work for them, as well as reassure them about your transparency.
Public documentation also helps with SEO, since your keywords will likely naturally come up frequently on your documentation pages.
Billing history
Once you have a sufficient number or sufficiently large customers, you'll likely start getting requests around tax time for their billing history.  Your payment system will keep track of payments for you, and many of them will be able to generate invoices from their web interface that you can send to customers who request it.
That might hold you for a while, but eventually, you'll want this functionality built into your system, so clients can self-serve, and your customer support team can focus on more-important issues.
Stuff That's Gonna Make Your Life A Lot Easier
Making the right decisions early on and as your service grows can have compounding benefits, but frequently, it's difficult to find time to devote to tasks that aren't seen as critical.  Still, if you can make the time to invest in them, it can pay off for you and your users as well.
Pause subscriptions & credit
Especially now, when people are trying to cut costs in both their lives and businesses, the ability to pause a subscription instead of cancel it outright can mean the difference between saving a customer and losing them.  Similarly, the ability to credit customers some free time or usage on your service can aid in retention, especially if something goes wrong and you want to make it up to them.
User ID obfuscation
When displaying publicly-visible auto-incrementing IDs (such as user IDs), it can be a good idea to obfuscate what that number actually is.  This prevents competitors and skittish customers from identifying how much usage your service has seen so far.  A great library for this is Hashids, which has many compatible implementations across many languages.
Limited number of development languages
The fewer languages your app uses, the less common code that you'll have to duplicate between the various services and projects you require.  Some are going to be unavoidable, such as JavaScript if you have a web app with any serious browser interactions, Swift for iOS, and Java/Kotlin for Android.  Web apps, however, offer a truly terrifying number of languages you can choose for server code: PHP, Ruby, JavaScript, Typescript, Go, Rust, Java, Python, Perl, Scala, Erlang, and even C# and C++.  In a microservices environment, it can be tempting to use a variety of languages for your different services, but that means redeveloping and maintaining common libraries for every new language you want to include.
In extreme situations, you can limit yourself to just one language, even across multiple disparate platforms.  JavaScript can do front-end and back-end web development, desktop development through Electron, and mobile development through Cordova.  There are definite trade-offs for going this route, but for a smaller studio, this opens up a multi-platform strategy on a limited budget.
Linters
Linters like ESLint, RuboCop, and Flake8 can make a marked improvement in your code.  They can catch stylistic errors long before they make it into production, and many stylistic errors are really just shortcomings of your chosen language, where hard-to-find bugs breed and propagate.
Monorepo
Monorepos are great!  They're especially great if you're just starting your SaaS, as they're far simpler than trying to work with multiple repositories when managing dependencies, figuring out code re-use, and ensuring that all the correct code is committed before deploys go out.
Everyone's situation is different, of course, and it may make sense in your case to go with multiple repositories, or even one day switch to such a strategy, but when you're starting out, you want to limit the complexity of your project as much as you can, and the monorepo strategy will definitely pay off in this regard.
User impersonation
Being able to log in as your users from your Admin Console can help immensely when trying to sort out customer service issues.  Instead of having several back-and-forth "what do you see now?" emails, you can just log in as them and find out.  There are a lot of things to consider when writing a user impersonation feature, however: Do you require special access to impersonate users?  Do you require the user's permission to impersonate them?  Are actions taken while impersonated logged?  Can you even take actions when impersonating, or view only?  How do you indicate that you are impersonating a user (vs. logged in under your own account)?
These aren't the only considerations, but ideally it's enough to make the point that there's a lot more to user impersonation than simply changing a token ID.
Improved production deployments
Once you start getting enough customers with sufficient expectations, you'll have to make modifications to your deploy process for increased reliability and flexibility:
Updating in-place won't work forever.  Eventually, switching to blue/green deploys or even something as simple as displaying a maintenance mode page while you update will be necessary to keep people from interacting with the system while performing significant changes.
If you have a complex SPA, you'll want to be able to inform users when you've made an update that requires reloading that code.  Tracking version numbers both in your UI code and on the server will allow you to pop up a notification, allowing the user to save their work and then reload.
Ideally, you should be using a bug tracking service.  If you also send your source maps to them when performing a deploy, they can provide even better error messages when UI errors occur.
Serving your UI JavaScript from your server is simple and easy, but users appreciate fast, and your job is to do the hard work so that users have a good time.  A relatively easy way to speed up your user's experience is to upload your UI JavaScript on release to a CDN.  This is a one-time change you need to make that pays dividends for your users going forwards.
You'll likely be manually checking that releases go as expected, but automated smoke tests that run on every deploy are a better way to catch issues that might otherwise slip by you when you're tired, distracted, or in a hurry.
What's the alternative?
If you don't want to start from an empty folder and write all this code yourself, you should consider using a SaaS starter kit, and it just so happens that you're reading the blog for one right now!  With Nodewood, you can get started writing business logic today, saving weeks or even months of development time.
Nodewood starts you off with a full working web app, with a Vue front-end and Express back-end, built entirely from JavaScript.  Form validation, testing, user authentication and management, subscription/billing are all built-in, alongside a sleek and customizable application theme with an easy-to-extend admin console.
0 notes
keefwilliams1980 · 6 years ago
Text
Humour, animation and gentrification
Throughout this year as I developed my animation and wrote and researched my blog, I realised that I was avoiding discussion of arguably the most important aspect of my animation; as a short film, the animation won’t allow for in depth examination of gentrification and the impact it has on individuals and communities. The intended visual humour is the sole means by which the points will be made, and if they don’t get a laugh, they won’t have worked.
Throughout my contributions to seminars and my research and writing of my blog, I’ve avoided too much focus on the humour I’m trying to include, but I’ve grown to realise that finding humour and writing about it isn’t just valid but is essential. Considering that artists are part of the gentrification process, having a potential negative impact on people who were their predecessors in their homes, bars, high streets etc, analysis by artists is at risk of being superfluous if they aren’t aware of and willing to address their own position and potential privilege. Perhaps for this reason, many of the best depictions of gentrification on screen come from BAME writers and directors, not least Blindspotting, the subject of a previous blog post.
The reason I chose to tell a story through animation in the first place was due to a love of the form, and a lack of experience in actually trying it, both claymation (as mine is) and hand drawn. The filmmaker and ex Monty Python member Terry Gilliam wrote;
“You get to be an impish god. You get to reform the world. You get to turn it upside down, inside out. You bug out eyes. You put moustaches on the Mona Lisa. You change the world and have for a brief moment a bit of control over it. At least you get to humiliate it for a moment, and that’s what all cartoonists get their kicks from!”
(Terry Gilliam, “Terry Gilliam: Interviews(conversations with filmmakers)”, David Sterritt, 2004, ISBN 1578066239
This summarises well the reason I wanted to explore gentrification, and my own role as someone who has felt the impact of gentrifcation myself, and has potentially had impact as a gentrifier, through animation. Through exaggeration and visual cues I can create an inherently humourous, heightened reality in which i can use self deprecation to tell a simple story that becomes more obviously humourous through the form.
The bare bones of the structure of my story could as easily be written as horror or tragedy, but it’s the animation and design that will sell it as funny.
The basic outline of my story is that an excited young boy in the 1980s manages to persuade his mum to take him to a showing of a movie, Back To The Future 2, which shows an idealised version of 2015, with futuristic technology that entered widespread pop culture as almost expectations for the future; hover boards, flying cars etc.
The boy leaves the cinema pining for this exciting future. We skip forward thirty years and the boy, now a grown man with a paunch, is outside the same cinema, now boarded up, but with signs announcing an imminent re-opening as a craft beer pub.
The protagonist is not impressed at this, and bemoans the lack of hoverboards, flying cars etc, at which point a hipster, on one of those Segway type monstrosities which gets called a hoverboards pretty much for no other reason than that actual hoverboards don’t exist, soaks the protagonist with water from a puddle as he speeds past.
We then eventually cut to the protagonist, resigned, entering the craft beer pub as it opens and finding that he actually quite likes it there.
It occurred to me afterwards that the final beat of the story is more or less exactly the same as Winston Smith’s;
“He gazed up at the enormous face. Forty years it had taken him to learn what kind of smile was hidden beneath the dark moustache. O cruel, needless misunderstanding! O stubborn, self-willed exile from the loving breast! Two gin scented tears trickled down the sides of his nose. But it was alright, everything was alright, the struggle was finished. He had won the victory over himself. He loved Big Brother”
(1984, George Orwell, 1948, ISBN 9780451524935)
In my animation, the intention is to play the moment as an “if you can’t beat ’em, join ‘em!” moment, but it’s only by landing it as a joke that works that I would avoid it either looking like an act of outright hypocrisy, or even the risk that it plays as if I thought drinking a craft beer an equivalent act of defeat as Smith’s final moments in the novel. This is where the inherent style of animation signals the “not taking myself too seriously” intent of the animation, and where the possibilities of exaggeration of gesture, design etc allow me to play it for laughs, hopefully without losing meaning.
While I am keenly interested in animation and considered myself relatively savvy of the form, in creating my characters and then quickly finding that the act of animating them doesn’t necessarily make the actions funny (as discussed, a prerequisite for the project to work), it seemed pertinent to look back at the earliest forms of animation, to see how the visual vocabulary of animation came to be, things that I potentially took for granted and so wasn’t consciously aware I might need to include.
Paul Wells, director of the Animation Academy at Loughborough University, writes;
“Frank Thomas and Ollie Johnson, veteran animators at the Disney Studios, suggest that Disney understood that a fundamental principle of comedy was that ‘the personality of a victim of a gag determines just how funny the whole incident will be’.
Crucially, ‘personality’ here precedes the ‘gag’, and for Disney, personality is informed by status and identity; therefore it is intrinsically funnier if a king slips on a banana skin rather than a child”
and;
“Disney’s concession towards the stereotypical, however, did lie in the use of ‘caricature’ and ‘exaggeration’, which operated as heightened signifiers of human thought and emotion as they were played out by animal characters. ‘Caricaturing’, in the Disney canon is largely used to denote human flaws, whilst ‘exaggeration’ is deployed to stress human foibles, a distinction which essentially delineates the kind of comedy caused by the character themself and the kind of comedy inherently within the character”
(Paul Wells, Understanding Animation, 1998, ISBN 9780415115964)
These basic principles, which I immediately recognised as underpinning characters in all sorts of comedy, (in animation and live action) were something that I could use in creating humour that works; initially the main character in my animation just...did things. just had things happen. All of the character, I realised, was in the plasticine model and not in any sense of the character having a personality I needed to realise.
Having only a short amount of running time of the film in which to create a sense of character, it makes sense to approach this in broad strokes, so my initial idea that the character “nags” his mother to get him pick & mix, to take him to the cinema, becomes instead that his mother offers to do so and the kid is grateful and excited - hopefully this creates a more likeable character. As we move forward in time and see his disappointment that the future he dreamed of didn’t happen, and his favourite cinema boarded up, we hopefully feel sorry for him but laugh at his misfortune of being soaked, (and subsequent pratfalls). Then, I hope, the final scene of him enjoying a pint of craft beer as he joins the hipsters will be a kind of resolution where we understand why he does so, and don’t begrudge him his pint, even as we might now dismiss him as a hipster (after all, what is more hipsterish than a thirty something man bemoaning that Back to the Future 2 didn’t happen for real?)
0 notes
pubtheatres1 · 8 years ago
Photo
Tumblr media
Old Joe’s Fish’n’Chill Directed by Griffith Rees Written by Stephanie Degreas and Raphael Ruiz The Gielgud Theatre (transferred from The Cat's Back pub in Putney as part of the Wandsworth Arts Fringe on the 5th and 6th of May) 4th July/6th July 2017 ‘vague, dark, and unexpectedly comic’ ★★★★ If slow burning theatre that requires considerable after thought from the audience and is full of ambiguity is not your thing, then this is not for you. But if you like a bit of mystery, a bit of a challenge and can take the message of a piece hand in hand with its absurdity, then this show is most definitely for you. Old Joe’s Fish ‘n’ Chill, a once vibrant club and bar that people travelled to, to enjoy the music, the dancing, and of course, the fish and chips. A year after the terrorist attack that all but destroyed the club, and resulted in the death of a number of its customers, we are introduced to an eclectic group of strangers; between a Greek drag queen, a Finnish letter thief, a Czech dictator, an Irish refugee, an English terrorist and a Spanish drifter, who are all inextricably connected. The play begins as it means to go on; vague, dark, and unexpectedly comic, from word and prop play, repetition and games established between the characters. A little bit like the Pythons at times, if the Pythons made a dystopian thriller. The ensemble was strong, committed and worked well together. Stand out was Alexandros Vardaxoglou as Petra, the MC, and guardian of the bar since Old Joe the parrot’s death. Sensual, old, naughty and at times savage, Petra dominates the space, frightening and seducing the other characters at her whim. Mention must also go to Hadleigh Harrison, playing the Englishman; the physical tics, the impeccable memory, and the breakdown of his psyche are all played with a razor-sharp edge that makes him compelling to watch. And his practice of recording people he meets as their hair and eye color, and height, systematically reducing them, aptly demonstrates and sums up the themes of identity the play is exploring. There are flaws in the show. Aspects that perhaps could still be looked at and developed. The pacing could maybe do with some work. Once I was into it I was hooked and on the edge of my seat, but it took a good while to get there. Perhaps that can be solved with edits, cuts or maybe just some re-working of the early meetings to pull the audience in quicker. There were some logistical things that stuck out to me, at times the vocal power was lacking and I missed words, and sometimes entire lines, also the actors occasionally lost their light and played almost entire scenes out on the darker edges of the stage. But these are just craft things that can be solved by being more aware of the space around them. The one other thing that I was slightly unsure about was the inclusion of the supernatural. One character, Maura, played movingly by Eve Niker, has supernatural powers that she uses during heightened emotional moments, to harm the other characters, sometimes deliberately sometimes not. I didn’t really know why she had the powers and why it was included in the play. It didn’t feel necessary, the cast establish this world well, and it’s clear that this is not the society that we live in today. I think they could’ve trusted their dystopian vision more, there wasn’t a need for the powers; they felt superfluous to me. Old Joe’s Fish ‘n’ Chill is a great example of the personal-political play. Exploring boundaries, borders, identity and home, Old Joe’s is the last of the liminal spaces. The characters show us just how intrinsically linked our sense of our own identities is to location and to home. They also show us that freedom and hope offer the chance for renewal, like a paper phoenix folded from a suicide note. If you are willing to just accept the absurdist tendencies of the play that become apparent relatively quickly, then it is a much more enjoyable experience. To try and make sense of it can be an effort, better to just ride it out and invest in what is being presented to you. This is not to say that passiveness is the key here; the play presents particular challenges that as an audience we are required to meet head on. At a time like this, fraught with isolationism, home and identity have never before been under such scrutiny, nor have they ever been so vital. Old Joe’s Fish ‘n’ Chill recognizes that and shows us how beautiful liminality can be; it shows us what we risk losing as more boundaries and borders are built. Follow the company here – https://twitter.com/bewildertheatre Verity Williams is a poet, actor, playwright, dog enthusiast and committed gin drinker (not necessarily in that order). Born and raised in Dorset, Verity has a BA in English and Drama from Royal Holloway, an MA in Creative Writing from Bath Spa and an MA in Acting from East 15. @Verity_W_
0 notes
vileart · 8 years ago
Text
Dramaturgy, She Didn’t Write: Lizzy Skrzypiec @ Edfringe 2017
Murder, She Didn’t Write
Pleasance Courtyard | Pleasance Beyond
17:00 (18:00)
2-28 August
2-4-1 on 7th & 8th August
Late night drag 
‘Murder, She Didn’t Write’
Every Sunday at 23:00
A classic murder mystery is created on the spot in this ingenious and hilarious show from Bristol Improv Theatre's resident company. Miss Crimson poisoned in the parlour? Mr Gold exploded by cannon in Sainsbury's? You decide! But will you guess whodunnit? And for your Sunday night entertainment, don’t forget our additional late night shows!
What was the inspiration for this performance?
This improv show is a murder mystery format we have spent years creating and performing. We are improvisers from a range of backgrounds and we wanted to create a show that has both drama and comedy - rare in a lot of improv shows. Murder mystery is very popular and, judging by the popularity of a lot of crime dramas on Netflix etc, it certainly seems in vogue. 
However, when we came up with the show we just picked something we would enjoy learning about which had a whole world we could create, something you could really get your teeth into as a viewer. Not just a throw away series of sketches but a genuine plot with twists and turns and red herrings that you could really invest in. We hope we have achieved that with Murder, She Didn't Write.
Is performance still a good space for the public discussion of ideas? 
It certainly is. It's my favourite thing to do, after a show, put the world to rights over a pint of gin and just discuss what we've seen. It's always been a great catalyst to get the grey cells in motion. I've watched a fair few shows I have hated or certainly felt were poor performances, but even those have sparked discussion. 
Even a badly performed show can give you something to talk about good or bad, and in that case has it really failed? 
How did you become interested in making performance?
Me personally? I've always been a bit of a performer I think, even back at school dramatically retelling embarrassing stories or recounting what happened in class "oh you wont believe what Lisa did in History?" I, like most improvisers, got into the art of improv at university. Bristol Improv Society was both incredibly inspiring and just plain silly. 
I thought it was ludicrous people would pay good money to see a show where people dicked around playing games on stage. Turns out it's a beautiful thing to watch, and to perform. I was hooked.
  Is there any particular approach to the making of the show?
I used to watch a lot of Peter Cook and Dudley Moore as a kid and a lot of Monty Python too. It seemed like it was a space where performers had fun, there was a palpable joy and friendship. Peter Cook would always go off script to make Dudley Moore corpse and I thought it was the most marvelous thing to watch. I'm of the belief that an audience like that chemistry, they like to be in on the act. 
There's the story of two men in an art gallery but also the story of Peter pulling out whatever lines he could to make Dudley nearly choke on his sandwich. That's the approach we take on stage, we are a band not a group of individual performers. People like watching us harmonise with ideas and play with each other. Setting each other up and letting the audience in on something special. We are always in each other's heads.
  Does the show fit with your usual productions?
We are the resident group of the Bristol Improv Theatre and they teach a lot of long form (plot lead) improvisation so in that respect MSDW is absolutely a fit for their usual productions. This is Degrees of Error's main show. Our "flagship" production we've worked on for about 5 years. 
We also have a few other formats we create and try out but this one is something we've spent a long time on. We have another show called "Writers' Room" which is completely different to MSDW. It's set in a writers' basement, littered with ideas, where we gather round a typewriter to tell a story which we jump on stage and act out. It's very stylistic (similar to MSDW) but much less formatted which gives us a vehicle to perform a different type or style of improvisation. 
  What do you hope that the audience will experience?
It's a play along show. As with any murder mystery you'll be guessing whodunnit the whole time and we ask everyone to point out who they think is the murderer before the final denouement. However, I also hope there's that extra layer that only improv can provide - a scene within a scene. 
Mr Blue talking to Ms Violet but also two improvisers playing on stage, working together, harmonising, throwing each other offers and curve balls. Setting each other up for evidence and motives. Building on a story. A two level approach where on one hand we have a complex story (I hope) and on the other we have a band of people joyously dicking around.
  What strategies did you consider towards shaping this audience experience?
So there are a number of audience interactions formatted into our show. We have a character called Jerkins who is a member of the audience who catches a hat which is randomly and blindly thrown by the detective. 
They help the detective choose which audience suggestions they want for the show. We ask the audience for suggestions on an event during which a murder takes place, and an unusual item which is central to the case. Then Jerkins also picks (without anyone else in the audience seeing) the victim and the murderer. It's up to the rest of the audience to try and work out who the murderer is. 
Then, just before the denouement, we ask everyone to point at who they think did it. It's almost a game show format but it allows the audience to heavily engage in each show and keep them playing along. It's a good audience experience that we are pretty pleased with. Also, it's a format which lets us roll up our sleeves to show that the show is truly being made up on the spot. We've even done murders in space!
from the vileblog http://ift.tt/2rCXAef
0 notes